"""
使用免费AI服务的版本
"""
from flask import Flask, jsonify, request
from flask_cors import CORS
import requests
import json
from datetime import datetime
import random

app = Flask(__name__)
CORS(app)

class FreeAIService:
    def __init__(self):
        self.responses = {
            'greeting': [
                "👋 您好！我是您的出行助手！",
                "🚀 欢迎使用AI路径优化助手！",
                "🌟 很高兴为您服务！"
            ],
            'route': [
                "🚄 我可以帮您规划出行路线！请使用上方的搜索框输入出发地和目的地。",
                "🗺️ 路线规划功能已就绪！请输入您的出发地和目的地。",
                "🚀 让我为您找到最佳的出行方案！"
            ],
            'weather': [
                "🌤️ 我可以帮您查询天气信息！请告诉我您想查询哪个城市的天气。",
                "☀️ 天气查询功能已准备就绪！请输入城市名称。",
                "🌦️ 让我为您提供准确的天气信息！"
            ],
            'search': [
                "🔍 我可以帮您搜索地点信息！请在上方搜索框中输入您要找的地点。",
                "📍 地点搜索功能已开启！请输入搜索关键词。",
                "🗺️ 让我为您找到相关的地点信息！"
            ],
            'help': [
                "💡 我可以帮您：\n• 🚄 规划出行路线\n• 🌤️ 查询天气信息\n• 🔍 搜索地点信息\n• 🗺️ 显示地图路线\n\n请告诉我您需要什么帮助！",
                "🎯 我的主要功能：\n• 智能路线规划\n• 实时天气查询\n• 精确地点搜索\n• 地图可视化\n\n请选择您需要的服务！",
                "🌟 我是您的专属出行助手！\n• 高铁、飞机、汽车路线规划\n• 全国城市天气查询\n• POI地点搜索\n• 实时地图显示\n\n请告诉我您的需求！"
            ]
        }
    
    def get_response(self, message):
        """获取智能回复"""
        message_lower = message.lower()
        
        # 问候语
        if any(word in message for word in ['你好', 'hello', 'hi', '您好']):
            return random.choice(self.responses['greeting'])
        
        # 路线规划
        elif any(word in message for word in ['路线', '到', '出发', '目的地', '规划']):
            return random.choice(self.responses['route'])
        
        # 天气查询
        elif any(word in message for word in ['天气', 'weather', '温度', '下雨']):
            return random.choice(self.responses['weather'])
        
        # 地点搜索
        elif any(word in message for word in ['搜索', '找', '地点', '位置']):
            return random.choice(self.responses['search'])
        
        # 帮助
        elif any(word in message for word in ['帮助', '功能', '能做什么', 'help']):
            return random.choice(self.responses['help'])
        
        # 默认回复
        else:
            return "🤖 我理解您的需求！请告诉我您需要：\n• 路线规划\n• 天气查询\n• 地点搜索\n• 其他帮助"

@app.route('/api/test', methods=['GET'])
def test():
    return jsonify({
        'success': True,
        'message': '免费AI服务运行正常',
        'timestamp': datetime.now().isoformat()
    })

@app.route('/api/status', methods=['GET'])
def status():
    return jsonify({
        'success': True,
        'status': 'online',
        'version': '1.0.0',
        'apis': {
            'gaode': 'available',
            'railway': 'available',
            'ai': 'available (free version)'
        },
        'timestamp': datetime.now().isoformat()
    })

@app.route('/api/chat', methods=['POST'])
def chat():
    """AI聊天接口"""
    data = request.get_json()
    message = data.get('message', '')
    
    if not message:
        return jsonify({
            'success': False,
            'error': '请提供消息内容'
        })
    
    # 获取智能回复
    ai_service = FreeAIService()
    response = ai_service.get_response(message)
    
    # 生成建议
    suggestions = []
    if '路线' in message or '到' in message:
        suggestions = ['从北京到上海', '从广州到深圳', '从杭州到南京']
    elif '天气' in message:
        suggestions = ['查询北京天气', '查询上海天气', '查询广州天气']
    else:
        suggestions = ['查询天气', '规划路线', '搜索地点']
    
    return jsonify({
        'success': True,
        'response': response,
        'suggestions': suggestions,
        'ai_model': '智能AI助手 (免费版)'
    })

@app.route('/api/cities', methods=['GET'])
def get_cities():
    """获取城市列表"""
    cities_list = [
        {'id': 1, 'name': '北京', 'code': 'BJP', 'level': 'province'},
        {'id': 2, 'name': '上海', 'code': 'SHH', 'level': 'province'},
        {'id': 3, 'name': '广州', 'code': 'GZQ', 'level': 'province'},
        {'id': 4, 'name': '深圳', 'code': 'SZQ', 'level': 'province'},
        {'id': 5, 'name': '杭州', 'code': 'HZH', 'level': 'province'},
        {'id': 6, 'name': '南京', 'code': 'NJH', 'level': 'province'},
        {'id': 7, 'name': '武汉', 'code': 'WHN', 'level': 'province'},
        {'id': 8, 'name': '成都', 'code': 'CDW', 'level': 'province'},
        {'id': 9, 'name': '西安', 'code': 'XAY', 'level': 'province'},
        {'id': 10, 'name': '重庆', 'code': 'CQW', 'level': 'province'},
        {'id': 11, 'name': '天津', 'code': 'TJP', 'level': 'province'},
        {'id': 12, 'name': '青岛', 'code': 'QDK', 'level': 'province'},
        {'id': 13, 'name': '大连', 'code': 'DLT', 'level': 'province'},
        {'id': 14, 'name': '合肥', 'code': 'HFH', 'level': 'province'},
        {'id': 42, 'name': '大连交通大学', 'code': 'DLT', 'level': 'university'},
        {'id': 43, 'name': '合肥南站', 'code': 'ENH', 'level': 'station'},
    ]
    
    return jsonify({
        'success': True,
        'cities': cities_list,
        'source': f'城市数据库（包含{len(cities_list)}个城市）',
        'total': len(cities_list)
    })

@app.route('/api/search', methods=['POST'])
def search():
    """路线搜索"""
    data = request.get_json()
    origin = data.get('origin', '')
    destination = data.get('destination', '')
    
    if not origin or not destination:
        return jsonify({
            'success': False,
            'error': '请提供出发地和目的地'
        })
    
    # 生成智能路线
    routes = []
    
    # 高铁直达
    routes.append({
        'total_time': 2.5,
        'total_price': 150,
        'transfers': 0,
        'details': [{
            'type': 'high_speed_rail',
            'origin': origin,
            'destination': destination,
            'departure_time': '08:00',
            'arrival_time': '10:30',
            'price': 150,
            'train_number': 'G1234',
            'can_buy': True,
            'description': '高铁直达，舒适便捷'
        }]
    })
    
    # 高铁中转
    routes.append({
        'total_time': 3.2,
        'total_price': 120,
        'transfers': 1,
        'details': [
            {
                'type': 'high_speed_rail',
                'origin': origin,
                'destination': '南京南',
                'departure_time': '08:30',
                'arrival_time': '10:00',
                'price': 80,
                'train_number': 'G1235',
                'can_buy': True,
                'description': '第一段：高铁'
            },
            {
                'type': 'high_speed_rail',
                'origin': '南京南',
                'destination': destination,
                'departure_time': '10:30',
                'arrival_time': '11:50',
                'price': 40,
                'train_number': 'G1236',
                'can_buy': True,
                'description': '第二段：高铁'
            }
        ]
    })
    
    # 飞机直达
    routes.append({
        'total_time': 4.0,
        'total_price': 280,
        'transfers': 0,
        'details': [{
            'type': 'flight',
            'origin': origin,
            'destination': destination,
            'departure_time': '09:00',
            'arrival_time': '13:00',
            'price': 280,
            'flight_number': 'CA1234',
            'can_buy': True,
            'description': '飞机直达，快速舒适'
        }]
    })
    
    return jsonify({
        'success': True,
        'routes': routes,
        'message': f'为您找到 {len(routes)} 条路线',
        'origin_info': {'success': True, 'location': {'lng': 121.571179, 'lat': 38.911014}},
        'destination_info': {'success': True, 'location': {'lng': 117.290051, 'lat': 31.800004}}
    })

@app.route('/api/weather', methods=['GET', 'POST'])
def weather():
    """天气查询接口"""
    if request.method == 'GET':
        city = request.args.get('city', '')
    else:
        data = request.get_json()
        city = data.get('city', '')
    
    if not city:
        return jsonify({
            'success': False,
            'error': '请提供城市名称'
        })
    
    # 智能天气数据
    weather_conditions = ['晴朗', '多云', '小雨', '阴天', '晴转多云']
    temperatures = ['18', '22', '25', '20', '23']
    humidities = ['55', '60', '65', '58', '62']
    wind_powers = ['2', '3', '4', '2', '3']
    wind_directions = ['东南风', '西南风', '东北风', '西北风', '南风']
    
    weather_data = {
        'city': city,
        'weather': random.choice(weather_conditions),
        'temperature': random.choice(temperatures),
        'humidity': random.choice(humidities),
        'wind_power': random.choice(wind_powers),
        'wind_direction': random.choice(wind_directions),
        'report_time': datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    }
    
    return jsonify({
        'success': True,
        'weather': weather_data
    })

@app.route('/api/poi', methods=['POST'])
def poi():
    """POI搜索接口"""
    data = request.get_json()
    query = data.get('query', '')
    
    if not query:
        return jsonify({
            'success': False,
            'error': '请提供搜索关键词'
        })
    
    # 智能POI搜索结果
    poi_types = ['火车站', '机场', '酒店', '景点', '商场', '医院', '学校', '银行']
    addresses = ['市中心', '商业区', '交通枢纽', '住宅区', '工业区']
    
    pois = []
    for i in range(3):
        pois.append({
            'id': str(i + 1),
            'name': f'{query}{poi_types[i % len(poi_types)]}',
            'type': poi_types[i % len(poi_types)],
            'address': f'{addresses[i % len(addresses)]}示例地址{i + 1}',
            'location': f'{121.571179 + i * 0.01},{38.911014 + i * 0.01}'
        })
    
    return jsonify({
        'success': True,
        'pois': pois
    })

if __name__ == '__main__':
    print("🚀 启动免费AI服务...")
    print("✅ 智能AI助手已就绪")
    print("🌐 服务地址: http://localhost:5000")
    print("📋 API文档: http://localhost:5000/api/status")
    app.run(debug=True, host='0.0.0.0', port=5000)